package com.lagou.mr.workhome;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.NullWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;
/**
 * 利用mr自带的排序功能，mr默认对key进行排序，完成文件中数据排序，
 * 需要将排序文件中的数据作为map端输出的key，map端输出的value可以为空
 */
public class SortMapper extends Mapper<LongWritable, Text, IntWritable, NullWritable> {
    private  IntWritable intWritable = new IntWritable();
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        // 将数据转换成hadoop中的int序列化类型，不然按Text类型排序，比较的不是文件中的数据了，而是按字符比较了
        intWritable.set(Integer.parseInt(value.toString()));
        context.write(intWritable, NullWritable.get());
    }
}
